#include <iostream>
#include <vector>
using namespace std;

int first_even_number(int n)
{
    // vector<vector<int>> vv;
    // vv.resize(n);


    // // 遍历vv，为其每个位置开辟空间
    // for(size_t i = 0; i < vv.size(); i++)
    // {
    //     vv[i].resize(2 * n - 1, 0);
    // }
    // vv[0][n - 1] = 1;




    // // 遍历vector<vector<int>>这个类似二维数组的东西
    // for (size_t i = 1; i < vv.size(); i++)
    // {
    //     for (size_t j = n - i - 1; j <= n + i; j++)
    //     {
    //         if(i == n - 1)
    //         {
    //             if(j - 1 < 0)
    //                 vv[i][j] = vv[i - 1][j] + vv[i - 1][j + 1];
    //             else if(j + 1 == vv[i].size())
    //                 vv[i][j] = vv[i - 1][j] + vv[i - 1][j - 1];
    //             else
    //                 vv[i][j] = vv[i - 1][j] + vv[i - 1][j - 1] + vv[i - 1][j + 1];
    //         }
    //         else {
    //             vv[i][j] = vv[i - 1][j] + vv[i - 1][j - 1] + vv[i - 1][j + 1];
    //         }
            
    //     }
    // }

    // // for (size_t i = 0; i < vv.size(); i++)
    // // {
    // //     for (size_t j = 0; j < vv[i].size(); j++)
    // //     {
    // //         cout << vv[i][j] << endl;
    // //     }
    // //     cout << endl;
    // // }


    // for(size_t i = 0; i < vv[n - 1].size(); i++)
    // {
    //     if(vv[n - 1][i] % 2 == 0)
    //     {
    //         return i + 1;
    //     }
    // }

    // return -1;


    // vector<int> v;
    // v.resize(2 * n - 1);

    // v[n - 1] = 1;
    // vector<int> v_tmp;
    // v_tmp.resize(2 * n - 1);


    // for(size_t i = 0; i < n - 1; i++)
    // {
    //     v_tmp = v;
    //     for(size_t j = 0; j < 2 * n - 1; j++)
    //     {
    //         if(j - 1 < 0)
    //             v[j] = v_tmp[j] + v_tmp[j + 1];
    //         else if(j + 1 == v.size())
    //             v[j] = v_tmp[j] + v_tmp[j - 1];
    //         else
    //             v[j] = v_tmp[j] + v_tmp[j + 1] + v_tmp[j - 1];
    //     }
    // }

    // for(size_t i = 0; i < v.size(); i++)
    // {
    //     if(v[i] % 2 == 0)
    //     {
    //         return i + 1;
    //     }
    // }

    // return -1;




    // vector<int> v;
    // v.resize(n);

    // v[n - 1] = 1;
    // vector<int> v_tmp;
    // v_tmp.resize(n);

    // for(size_t i = 0; i < n - 1; i++)
    // {
    //     v_tmp = v;
    //     for(size_t j = 0; j < n; j++)
    //     {
    //         if(j == v.size() - 1)
    //         {
    //             v[j] = v_tmp[j] + 2 * v_tmp[j - 1];
    //         }
    //         else 
    //         {
    //             if(j - 1 < 0)
    //                 v[j] = v_tmp[j] + v_tmp[j + 1];
    //             else
    //                 v[j] = v_tmp[j] + v_tmp[j + 1] + v_tmp[j - 1];
    //         }
    //     }
    // }

    // for(size_t i = 0; i < v.size(); i++)
    // {
    //     if(v[i] % 2 == 0)
    //         return i + 1;
    // }

    // return -1;


    // 上面是我自己研究半天的代码，过程肯定是对的，只不过当数据量太大的时候过不了oj
    // 原来每行第一个出现的偶数的位置是有规律的
    // [-1, -1, 2, 3, 2, 4, 2, 3, 2, 4, ...]

    if(n <= 2)
    {
        return -1;
    }
    else
    {
        if(n % 4 == 3 || n % 4 == 1)
            return 2;
        else if(n % 4 == 0)
            return 3;
        else
            return 4;
    }

}

int main() {
    int n;
    while(cin >> n)
    {
        cout << first_even_number(n) << endl;
    }
    return 0;
}
